﻿namespace SessionUse;

/// <summary>
/// 使用扩展方法来存储复杂类型数据到会话中
/// </summary>
public static class SessionExtensions
{
    public static void Set<T>(this ISession session, string key, T value)
    {
        if (value == null)
        {
            session.Remove(key);
            return;
        }
        var json = System.Text.Json.JsonSerializer.Serialize(value);
        session.SetString(key, json);
    }

    public static T? Get<T>(this ISession session, string key)
    {
        if (!session.TryGetValue(key, out var value))
        {
            return default;
        }
        var json = System.Text.Json.JsonSerializer.Deserialize<T>(value);
        return json;
    }
}
